EasyExt=function(){
	return {
		// 解析自定义的消息
		parse: function(message,callback){
			// 提示消息
 			if(message.type==NOTE_MESSAGE){
 				Ext.Msg.alert('', message.msg,callback);
 			}
 			// 确认消息
 			else if(message.type==CONFIRM_MESSAGE){
 				Ext.Msg.confirm('',message.msg,callback);
 			}
 			// 错误消息
 			else if(message.type==ERROR_MESSAGE){
 				EasyExt.showErrorMsg(message.msg);
 			}
 			else {
 				callback('yes');
 			}
		},
		showErrorMsg: function(msg){
			Ext.Msg.show({
				icon: Ext.MessageBox.ERROR,
				buttons: Ext.Msg.OK,
				msg: msg
			});
		},
		ajaxRequest: function(url,params,respSuccessCallback){
			Ext.Ajax.request({
				url: url,
				timeout: 60000,
				params: params,
				success: function(response, options) {
					try{
						var result = Ext.decode(response.responseText);
						respSuccessCallback(result);
					}catch(err){
						Ext.Msg.hide();
						alert(err.description);
					}
				},
				failure: function(response, options) {
					try{
						var result = Ext.decode(response.responseText);
						EasyExt.showErrorMsg(result.msg);
					}catch(err){
						Ext.Msg.hide();
						alert(err.description);
					}
				}
			});	
		},
		searchBar : function(height, items, func) {
			return new Ext.FormPanel({
						region : 'north',
						labelWidth : 40,
						labelAlign : 'right',
						frame : false,
						border : true,
						bodyStyle : 'padding:5px 5px 0',
						layout : 'column',
						height : height,
						items : items,
						keys : {
							key : Ext.EventObject.ENTER,
							fn : func
						}
					});
		},
		sendJsonArray : function(jsonArray, url, store) {
			Ext.lib.Ajax.request('POST', url, {
						success : function(response) {
							Ext.example.msg('信息', response.responseText);
							store.reload();
						},
						failure : function() {
							Ext.Msg.alert("错误", '与后台联系时出问题了');
						}
					}, 'data=' + encodeURIComponent(Ext.encode(jsonArray)));
		},
		getMsg : function(url) {
			Ext.lib.Ajax.request('POST', url, {
						success : function(response) {
							return response.responseText;
						},
						failure : function() {
							return '获取失败';
						}
					});
		},
		syncRequest : function(url) {
			var conn = Ext.lib.Ajax.getConnectionObject().conn;
			conn.open("GET", url, false);
			conn.send(null);
			return conn.responseText;
		},
		downloadProcess : function(url, store, cells, msg) {
			if (cells.length == 0) {
				Ext.Msg.alert("提醒", '请至少选择一行.');
			} else {
				Ext.Msg.confirm('信息', msg, function(btn) {
					if (btn == 'yes') {
						var mk = EasyExt.showLoadMask();
						var jsonArray = [];
						for (var i = 0; i < cells.length; i++) {
							jsonArray.push(cells[i].data);
						}
						Ext.lib.Ajax.request('POST', url, {
							success : function(response) {
								var result = response.responseText;
								var filePath = "";
								var msg = "";
								var results = null;
								if (result != "" && result != null) {
									results = result.split('|');
									if (results.length == 2) {
										msg = results[0];
										filePath = results[1];
									} else {
										msg = result;
									}
								}
								mk.hide();
								if (filePath != "") {
									Ext.MessageBox.show({
										title : "提示",
										msg : msg,
										buttons : {
											'ok' : '保存到本地',
											"cancel" : "关闭窗口"
										},
										fn : function(btn) {
											if (btn == 'ok') {
												if (filePath != ""
														&& filePath != null) {
													var contextPath = document
															.getElementById("contextPath").value;
													window.location.href = contextPath
															+ "/sublist/task_download.do?filePath="
															+ EasyExt
																	.replaceSpecialCharForUrl(filePath);
												}
											}
										}
									});
								} else {
									Ext.MessageBox.show({
												title : "提示",
												msg : msg,
												buttons : {
													"cancel" : "关闭窗口"
												}
											});
								}
							},
							failure : function() {
								mk.hide();
								Ext.Msg.alert("错误", '与后台联系时出问题');
							}
						}, 'data=' + encodeURIComponent(Ext.encode(jsonArray)));
					}
				});
			}
		},
		directDownloadProcess : function(url, msg) {
			Ext.Msg.confirm('信息', msg, function(btn) {
				if (btn == 'yes') {
					window.location.href = contextPath +url;
				}
			});
		},
		deleteProcess : function(url, store, cells) {
			if (cells.length == 0) {
				Ext.Msg.alert("提醒", '请至少选择一行.');
			} else {
				Ext.Msg.confirm('信息', '确定要删除?', function(btn) {
							if (btn == 'yes') {
								var jsonArray = [];
								for (var i = 0; i < cells.length; i++) {
									jsonArray.push(cells[i].data);
									store.remove(cells[i]);
								}
								EasyExt.sendJsonArray(jsonArray, url, store);
							}
						});
			}
		},
		showLoadMask : function(id) {
			if (id == null) {
				id = 'main-tabs';
			}
			mk = new Ext.LoadMask(Ext.get(id), {
						id : 'loadMask',
						msg : '加载数据中, 请稍侯…',
						removeMask : true
					});

			mk.show(); // 显示
			if (Ext.isIE && !Ext.isStrict) {
				mk.repaint();
			}
			return mk;
		},
		// 使用自定义的分页toolbar
		pagingToolBar: function(pageSizePlugin,store,useItems,pageSize){
			if(!pageSize){
				pageSize=25;
			}
			return new Ext.PagingToolbar({
				pageSize: pageSize,
				store: store,
				displayInfo: true,
				items: useItems,
				plugins: pageSizePlugin
			});
		},

		showIETips : function() {
			if (Ext.isIE6) {
				Ext.example.msg('使用小贴士',
						'对不起，你使用的IE6，将无法正常显示该平台内容。<br/> 强烈建议使用火狐浏览器。', 60);
			} else if (Ext.isIE) {
				Ext.example.msg('使用小贴士',
						'您使用的是IE浏览器。<br/>如果感觉页面展现很慢，建议使用火狐浏览器。', 20);
			}
		},

		comboRelation : function(srcComponent, destComponent, url) {
			srcComponent.on("blur", function(comboBox) {
						var value = comboBox.getValue();
						if (value != "") {
							destComponent.store.proxy = new Ext.data.HttpProxy(
									{
										url : url + value
									});
							destComponent.clearValue();
							destComponent.store.load();
						}
					});
		},
		replaceSpecialCharForUrl : function(s) {
			// 1.+ URL 中+号表示空格 %2B
			// 2.空格 URL中的空格可以用+号或者编码 %20
			// 3./ 分隔目录和子目录 %2F
			// 4.? 分隔实际的 URL 和参数 %3F
			// 5.% 指定特殊字符 %25
			// 6.# 表示书签 %23
			// 7.& URL 中指定的参数间的分隔符 %26
			// 8.= URL 中指定参数的值 %3D
			s = s.replace('%', '%25');
			s = s.replace('+', '%2B');
			s = s.replace(' ', '%20');
			s = s.replace('/', '%2F');
			s = s.replace('?', '%3F');
			s = s.replace('#', '%23');
			s = s.replace('&', '%26');
			s = s.replace('=', '%3D');
			return s;
		},
		// 内容换行
		renderContent : function(value, cell) {
			cell.attr = 'style="white-space:pre-wrap;"';// 这里设置为pre-wrap，不会处理多余的空白符，也不会把换行符变成一个空格。
			return "<span style='font-size:12px; font-family:Verdana; line-height: 150%'>"
					+ value + "</span>";// 这里设置字体和行距
		},
		// 在Ext.Container中reset指定名称的Ext.form.Field
		resetFields: function(container,fieldNames){
			if (!Ext.isArray(fieldNames)) return;
			for(var i=0;i<fieldNames.length;i++){
				var fields=container.find("name",fieldNames[i]);
				if(fields.length==0) continue;
				for(var j=0;j<fields.length;j++){
					try {fields[j].reset();}catch(err){}
				}
			}
		},
		// 清空Ext.data.JsonStore指定名称的baseParams
		clearJsonStoreBaseParams: function(store,baseParams){
			if (!Ext.isArray(baseParams)) return;
			for(var i=0;i<baseParams.length;i++){
				store.setBaseParam(baseParams[i], null);
			}
		},
		// 设置Ext.form.Field是否允许为空
		setFieldAllowBlank: function(destComp, allowBlank) {
			if (allowBlank==true || allowBlank=="true") {
				destComp.clearInvalid();
				destComp.allowBlank = true;
				if (destComp.fieldLabel.charAt(0) == '*') {
					Ext.getDom(destComp.label).innerHTML = destComp.fieldLabel.substring(1) + ':';
				}
				else {
					Ext.getDom(destComp.label).innerHTML = destComp.fieldLabel + ':';
				}
			}
			else {
				destComp.allowBlank = false;
				Ext.getDom(destComp.label).innerHTML = '<font color="#FF0000">*</font>' + destComp.fieldLabel + ':';
			}
		},
		// 获取Ext.form.Field的值
		getFieldValue: function(field){
			if(!field) return null;
			if (field.getXType()=='radiogroup') {
				return field.getValue().value;
			}
			else{
				return field.getValue();
			}
		},
		// 把Ext.Container中指定名称的Ext.form.Field封装在Object中返回
		convertFieldsToObject: function(container,fieldNames){
			if (!Ext.isArray(fieldNames)) return;
			var result = new Object();
			for(var i=0;i<fieldNames.length;i++){
				var fields=container.find("name",fieldNames[i]);
				if(fields.length==0) continue;
				var value;
				if(fields.length==1){
					value=EasyExt.getFieldValue(fields[0]);
				}else{
					value=new Array();
					for(var j=0;j<fields.length;j++){
						value.push(EasyExt.getFieldValue(fields[j]));
					}
				}
				result[fieldNames[i]]=value;
			}
			return result;
		},
		/**
		 * 校验Ext.Container中指定名称的Ext.form.Field
		 * @param container
		 * @param fieldNames
		 * @param preventMark
		 * @returns
		 */
		isFieldsValid: function(container,fieldNames,preventMark){
			if (!Ext.isArray(fieldNames)) return;
			var invalidTimes=0;
			for(var i=0;i<fieldNames.length;i++){
				var fields=container.find("name",fieldNames[i]);
				if(fields.length==0) continue;
				for(var j=0;j<fields.length;j++){
					try{
						if(!fields[0].isValid(preventMark)){
							++invalidTimes;
						}
					}catch(err){}
				}
			}
			return invalidTimes==0;
		}
	};
}();
